// Package easyhash 包装哈希散列方法，使其一步完成
package easyhash

import (
	"encoding/hex"
	"hash"
	"io"
)

// EasyHash 使用指定的哈希算法
// crypto.BLAKE2b_256 是速度和安全性非常好哈希算法，推荐使用
func EasyHash(h hash.Hash, r io.Reader, salt []byte) ([]byte, error) {
	h.Write(salt)
	_, err := io.Copy(h, r)
	return h.Sum(nil), err
}

func MustEasyHash(h hash.Hash, r io.Reader, salt []byte) []byte {
	data, err := EasyHash(h, r, salt)
	if err != nil {
		panic(err)
	}
	return data
}

func Hex2Str(data []byte) string {
	if data == nil {
		return ""
	}
	return hex.EncodeToString(data)
}
